package com.tarena.lbs.content.pojo.po;

import lombok.Data;
import lombok.ToString;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.*;

import java.util.Date;

@Data
@ToString
@Document(indexName = "lbs_article")
@Setting(shards = 1, replicas = 0)
public class ArticleSearchPO {

    /** 主键ID */
    @Id
    @Field(type = FieldType.Integer)
    private Integer id;

    /** 文章标题 */
    @Field(type = FieldType.Text)
    private String articleTitle;

    /** 文章分类ID */
    @Field(type = FieldType.Integer)
    private Integer articleCategoryId;

    /** 文章标签 */
    @Field(type = FieldType.Keyword)
    private String articleLabel;

    /** 文章摘要 */
    @Field(type = FieldType.Text)
    private String articleDigest;

    /** 文章作者用户名 */
    @Field(type = FieldType.Keyword)
    private String articleUsername;

    /** 文章封面图片URL */
    @Field(type = FieldType.Keyword)
    private String articleCover;

    /** 文章主图URL */
    @Field(type = FieldType.Keyword)
    private String articleMainPic;

    /** 文章详细内容 */
    @Field(type = FieldType.Text)
    private String articleDetail;

    /** 所属店铺ID */
    @Field(type = FieldType.Integer)
    private Integer shopId;

    /** 活动标语，如"吐血大甩卖"、"冬季打折"、"全场8折"等
     *  ES内置有一些分词器：standard、simple等 */
    @Field(type = FieldType.Text)
    private String activityWord;

    /** 活动ID */
    @Field(type = FieldType.Integer)
    private Integer activityId;

    /** 纬度信息 */
    @Field(type = FieldType.Text)
    private String latitude;

    /** 地理位置信息，使用GeoPoint类型存储 */
    @GeoPointField
    private String location; // 注意：这里假设location是GeoPoint类型

    /** 经度信息 */
    @Field(type = FieldType.Text)
    private String longitude;

    /** 文章状态 */
    @Field(type = FieldType.Integer)
    private Integer articleStatus;

    /** 访问次数统计 */
    @Field(type = FieldType.Integer)
    private Integer accessCount;

    /** 点赞数统计 */
    @Field(type = FieldType.Integer)
    private Integer likeCount;

    /** 收藏数统计 */
    @Field(type = FieldType.Integer)
    private Integer favoriteCount;

    /** 用户ID */
    @Field(type = FieldType.Integer)
    private Integer userId;

    /** 来源标识 */
    @Field(type = FieldType.Integer)
    private Integer source;

    /** 创建时间 */
    @Field(type = FieldType.Date, format = {DateFormat.date_hour_minute_second})
    private Date createTime;

    /** 更新时间 */
    @Field(type = FieldType.Date, format = {DateFormat.date_hour_minute_second})
    private Date updateTime;

}
